#include <iostream>
#include <exception>

class MyException:public std::exception
{
public: 
    MyException(const std::string& info):info(info){}
    const char* what()const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW
    {
        return info.c_str();
    }
private:
    std::string info;
};

void func()
{
    throw MyException("这是我自己写的异常");
}
// struct Test
// {
//     Test()
//     {
//         std::cout<<"构造函数\n";
//     }
//     ~Test()
//     {
//         std::cout<<"析构函数\n";
//     }
// };
// void func(int n)
// {
//     if(n > 5)
//     {
//         // throw "数组越界";
//         throw Test();
//     }
// }

int main()
{   
    
    // try
    // {
    //     func(6);
    // }
    // // catch(const char*s)
    // catch(const Test&t)
    // {
    //     // std::cout<<s<<std::endl;
    //     std::cout<<"Test异常!\n";
    // }
    // //在异常处理完毕之后释放该对象
    // std::cout<<"helloworld"<<std::endl;
    try
    {
        func();
    }
    catch(const std::exception& e)
    {
        std::cerr << e.what() << '\n';
    }
    
    return 0;
}